/* 
根据题意，如果我们使用暴破，会导致时间复杂度为 n^2n 
2
 ，这样的代价无疑是很大的。

所以我们很容易想到用哈希表来解决这个问题。

我们遍历到数字 aa 时，用 targettarget 减去 aa，就会得到 bb，若 bb 存在于哈希表中，我们就可以直接返回结果了。
若 bb 不存在，那么我们需要将 aa 存入哈希表，好让后续遍历的数字使用。
target 两数之和
nums数组
返回数组中两数之和等于目标值的索引
*/

function towNums(nums, target) {
    let map = new Map()
    for (let i = 0, len = nums.length; i < len; i++) {
        if (map.has(target - nums[i])) {
            return [map.get(target - nums[i]), i]
        } else {
            map.set(nums[i], i)
        }
    }
    return []
}

let nums = [2, 4, 6, 8, 9]
let target = 17

console.log(towNums(nums, target));